﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Alumno;

namespace SanFranciscoModel.Maestros
{
    public static class MaestroManager
    {
        public static List<MaestroNombreCurso> getAllNombresCursos()
        {
            List<MaestroNombreCurso> ListNombreCurso = new List<MaestroNombreCurso>();
            MaestroNombreCursoDataContext db = new MaestroNombreCursoDataContext();

            var objeto = from x in db.MaestroNombreCursos
                         select x;
            foreach (var tipo in objeto)
            {
                ListNombreCurso.Add(tipo);
            }
            return ListNombreCurso;
        }

        public static List<DateTime> getAllCalendarioLectivo()
        {
            List<DateTime> ListCalendariolectivo = new List<DateTime>();
            MaestroCalendarioLectivoDataContext db = new MaestroCalendarioLectivoDataContext();
            

            var objeto = from x in db.MaestroCalendarioLectivos
                         select x;
            foreach (var d in objeto)
            {
                string dia = string.Empty;
                string mes = string.Empty;

                if (d.Dia.ToString().Count() == 1)
                {
                    dia = "0" + d.Dia.ToString();
                }
                else
                {
                    dia = d.Dia.ToString();
                }

                if (d.Mes.ToString().Count() == 1)
                {
                    mes = "0" + d.Mes.ToString();
                }
                else
                {
                    mes = d.Mes.ToString();
                }

                string fecha = d.Ano.ToString() + "-" + mes + "-" + dia;
                DateTime dt = DateTime.ParseExact(fecha, @"yyyy-MM-dd", null);
                ListCalendariolectivo.Add(dt);
            }
            return ListCalendariolectivo;
        }

        public static List<DateTime> getListaHorarioHastaAltaAlumno(int DNIAlumno)
        {
            List<DateTime> ListCalendariolectivo = new List<DateTime>();
            MaestroCalendarioLectivoDataContext db = new MaestroCalendarioLectivoDataContext();
            AlumnoManager AlumnoManager = new Alumno.AlumnoManager();
            DateTime tope = AlumnoManager.getAlumnobyDNI(DNIAlumno).FechaAlta;

            var objeto = from x in db.MaestroCalendarioLectivos
                         select x;
            foreach (var d in objeto)
            {
                string dia = string.Empty;
                string mes = string.Empty;

                if (d.Dia.ToString().Count() == 1)
                {
                    dia = "0" + d.Dia.ToString();
                }
                else
                {
                    dia = d.Dia.ToString();
                }

                if (d.Mes.ToString().Count() == 1)
                {
                    mes = "0" + d.Mes.ToString();
                }
                else
                {
                    mes = d.Mes.ToString();
                }

                string fecha = d.Ano.ToString() + "-" + mes + "-" + dia;
                DateTime dt = DateTime.ParseExact(fecha, @"yyyy-MM-dd", null);

                if (dt.Date < tope)
                ListCalendariolectivo.Add(dt);
            }
            return ListCalendariolectivo;
        }

        public static MaestroSetting getMaestroSettings()
        {
            MaestroSetting MaestroSetting = new MaestroSetting();
            MaestroSettingsDataContext db = new MaestroSettingsDataContext();

            var objeto = from x in db.MaestroSettings
                         select x;
            foreach (var tipo in objeto)
            {
                MaestroSetting = tipo;
            }
            return MaestroSetting;
        }

        public static List<MaestroNombreCurso> getAllNombresCursosDisponibles()
        {
            List<MaestroNombreCurso> ListNombreCursoTemporal = new List<MaestroNombreCurso>();
            List<MaestroNombreCurso> ListNombreCursofull = getAllNombresCursos();
            List<MaestroNombreCurso> ListNombreCursofinal = new List<MaestroNombreCurso>();
            List<SanFranciscoModel.Curso.Curso> ListCurso = new List<Curso.Curso>();

            CursoManager cm = new CursoManager();
            ListCurso = cm.getCursoActual();

            foreach (SanFranciscoModel.Curso.Curso c in ListCurso)
            {
                if (c.Año == DateTime.Now.Year)
                {
                    MaestroNombreCurso mnc = new MaestroNombreCurso();
                    //Obtengo la primer letra = año
                    mnc.numero = char.Parse((c.NombreCurso).Substring(0, 1));
                    //obtengo segunda letra = division
                    mnc.letra = char.Parse((c.NombreCurso).Substring(1, 1));

                    ListNombreCursoTemporal.Add(mnc);
                }
            }

            foreach (MaestroNombreCurso mnc in ListNombreCursofull)
            {
                bool flag = false;

                foreach (MaestroNombreCurso m in ListNombreCursoTemporal)
                {
                    if (mnc.letra == m.letra && mnc.numero == m.numero)
                    {
                        flag = true;
                    }
                }
                if (flag ==false)
                    ListNombreCursofinal.Add(mnc);
            }


            return ListNombreCursofinal;
        }

        public static List<MaestroNombreCurso> getAllNombresCursosDisponiblesNumero()
        {
            List<MaestroNombreCurso> ListNombreCursoTemporal = new List<MaestroNombreCurso>();
            List<MaestroNombreCurso> ListNombreCursofull = getAllNombresCursos();
            List<MaestroNombreCurso> ListNombreCursofinal = new List<MaestroNombreCurso>();
            List<SanFranciscoModel.Curso.Curso> ListCurso = new List<Curso.Curso>();

            CursoManager cm = new CursoManager();
            ListCurso = cm.getCursoActual();

            foreach (SanFranciscoModel.Curso.Curso c in ListCurso)
            {
                if (c.Año == DateTime.Now.Year)
                {
                    MaestroNombreCurso mnc = new MaestroNombreCurso();
                    //Obtengo la primer letra = año
                    mnc.numero = char.Parse((c.NombreCurso).Substring(0, 1));
                    //obtengo segunda letra = division
                    mnc.letra = char.Parse((c.NombreCurso).Substring(1, 1));

                    ListNombreCursoTemporal.Add(mnc);
                }
            }

            foreach (MaestroNombreCurso mnc in ListNombreCursofull)
            {
                bool flag = false;

                foreach (MaestroNombreCurso m in ListNombreCursoTemporal)
                {
                    if (mnc.letra == m.letra && mnc.numero == m.numero)
                    {
                        flag = true;
                    }
                }
                if (flag == false)
                    ListNombreCursofinal.Add(mnc);
            }

            return ListNombreCursofinal;
        }

    }
}
